Iterator একটি Java.util প্যাকেজের ইন্টারফেস যা Java Collections Framework এর অংশ। এটি একটি ইউনিফাইড উপায় প্রদান করে বিভিন্ন ধরনের কন্টেইনার বা ডেটা স্ট্রাকচারের (যেমন List, Set, Queue) উপাদানগুলোতে ইটারেট বা পরিদর্শন (traversing) করার জন্য।
ইটারেটরের সাহায্যে আমরা একটি ডেটা সংগ্রহের সমস্ত উপাদান (elements) একে একে অ্যাক্সেস করতে পারি এবং এর মাধ্যমে এটি নিশ্চিত করা যায় যে আমরা কেবলমাত্র একবার করে প্রতিটি উপাদানে কাজ করছি।
1. Iterator ইন্টারফেসের ধারণা
Iterator ইন্টারফেসের মাধ্যমে আপনি একটি কন্টেইনারের উপাদানগুলিতে লুপিং করতে পারেন। এটি ডেটা স্ট্রাকচারের উপাদানগুলির উপর সিকোয়েনশিয়াল অ্যাক্সেস প্রদান করে। Iterator ইন্টারফেস সাধারণত Collection ইন্টারফেসের সাথে ব্যবহৃত হয় এবং List, Set, Queue প্রভৃতি কন্টেইনারের মধ্যে উপাদান পরিদর্শন করতে ব্যবহৃত হয়।
Iterator Interface Methods:
hasNext(): এটি চেক করে যে আরো উপাদান আছে কিনা। এটিtrueফেরত দেয় যদি পরবর্তী উপাদান থাকে এবংfalseফেরত দেয় যদি না থাকে।next(): এটি পরবর্তী উপাদানকে ফেরত দেয় এবং ইটারেটরকে পরবর্তী অবস্থানে নিয়ে যায়। যদি আর কোনো উপাদান না থাকে, তবে এটিNoSuchElementExceptionছুড়ে দেয়।remove(): এটি বর্তমান উপাদানটিকে কন্টেইনার থেকে মুছে ফেলে। এটি কেবল তখন কাজ করে যখনnext()মেথড ব্যবহার করা হয়েছে, এবং এটি উপাদানটি মুছে ফেলার অনুমতি দেয়।
2. Iterator কেন প্রয়োজন?
- Unified Access to Different Collections:
- Iterator ইন্টারফেস আপনাকে এক ধরনের সাধারণ পদ্ধতিতে বিভিন্ন ধরনের কন্টেইনার (যেমন List, Set, Queue) এর উপাদানগুলোতে অ্যাক্সেস করতে দেয়।
- এতে করে List, Set, বা Queue এর মধ্যে উপাদানগুলি পরিদর্শন করার জন্য আলাদা আলাদা কোড লেখা প্রয়োজন হয় না।
- Avoid Indexing (Indexed Access):
- যখন আপনি List বা Set এর মতো কন্টেইনারের উপাদানগুলোতে একে একে কাজ করেন, তখন Iterator এর মাধ্যমে আপনাকে ইন্ডেক্স ব্যবহার করতে হয় না।
- ListIterator (List এর জন্য) আপনাকে আগের উপাদানে ফিরে যাওয়ার (backward traversal) সুবিধাও দেয়।
- Safe Concurrent Modification:
- Iterator এর মাধ্যমে যখন আপনি কন্টেইনারের উপাদানগুলিতে ইটারেট করেন, তখন আপনি কন্টেইনারের উপাদান মুছে ফেলতে পারেন (যদি
remove()মেথড ব্যবহার করা হয়)। - এটি কন্টেইনারকে সঠিকভাবে পরিবর্তন করতে সাহায্য করে এবং একাধিক থ্রেডের মধ্যে নিরাপদভাবে ডেটার ম্যানিপুলেশন সম্ভব করে।
- Iterator এর মাধ্যমে যখন আপনি কন্টেইনারের উপাদানগুলিতে ইটারেট করেন, তখন আপনি কন্টেইনারের উপাদান মুছে ফেলতে পারেন (যদি
- Support for Removing Elements:
- Iterator ব্যবহার করে আপনি উপাদানগুলিকে remove() মেথড দিয়ে কন্টেইনার থেকে সরাতে পারেন। এটি ConcurrentModificationException প্রতিরোধ করে।
3. Iterator Example
এখানে Iterator ব্যবহারের একটি সাধারণ উদাহরণ দেখানো হয়েছে যেখানে ArrayList কন্টেইনারের উপাদানগুলোকে ইটারেটর ব্যবহার করে পরিদর্শন করা হয়েছে:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class IteratorExample {
public static void main(String[] args) {
// Create a List with some elements
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
// Create an Iterator for the List
Iterator<String> iterator = fruits.iterator();
// Iterate through the List using the Iterator
while (iterator.hasNext()) {
String fruit = iterator.next();
System.out.println(fruit);
// Example of removing an element during iteration
if(fruit.equals("Banana")) {
iterator.remove(); // Removes "Banana" from the List
}
}
// Show the modified list after removal
System.out.println("Modified List: " + fruits);
}
}
Output:
Apple
Banana
Cherry
Modified List: [Apple, Cherry]
Explanation:
fruits.iterator(): Iterator তৈরি করতে ব্যবহৃত হয়।hasNext(): এটি চেক করে যে next() মেথড কল করার জন্য আরও উপাদান রয়েছে কিনা।next(): এটি পরবর্তী উপাদানটি ফেরত দেয় এবং ইটারেটরকে পরবর্তী উপাদানে নিয়ে যায়।remove(): এটি চলতি উপাদানটি কন্টেইনার থেকে মুছে ফেলে। এখানে আমরাBananaমুছে ফেলেছি।
4. Advantages of Using Iterator
- Unified Iteration:
- একাধিক ধরনের কন্টেইনারের উপাদান একসাথে পরিদর্শন করার জন্য একটি সাধারণ পদ্ধতি ব্যবহার করা সম্ভব।
- Simplifies Code:
- Iterator ব্যবহার করে ডেটা স্ট্রাকচারের বিভিন্ন ধরনের উপাদান সহজে পরিদর্শন করা যায় এবং কোডও আরও পরিষ্কার এবং সংক্ষিপ্ত হয়।
- Avoids ConcurrentModificationException:
- Iterator এর মাধ্যমে আপনি একটি কন্টেইনারের উপাদানগুলি পরিদর্শন করার সময় সেগুলির থেকে উপাদান মুছে ফেলতে পারেন, এটি আপনাকে নিরাপদে কন্টেইনারে পরিবর্তন করতে সাহায্য করে।
- Can Be Used in Multi-threaded Environment:
- Iterator ব্যবহার করে আপনি একই সময়ে একাধিক থ্রেডের মাধ্যমে ডেটা স্ট্রাকচারের উপাদান পরিবর্তন করতে পারবেন, যা thread-safe কার্যকরী প্রক্রিয়া হিসেবে ব্যবহৃত হয়।
Iterator হলো একটি শক্তিশালী ইন্টারফেস যা Java Collections Framework এ বিভিন্ন ধরনের কন্টেইনারের উপাদান পরিদর্শন করার জন্য ব্যবহৃত হয়। এটি List, Set, Queue ইত্যাদি ডেটা স্ট্রাকচারের উপাদান একে একে অ্যাক্সেস করতে সহায়তা করে এবং remove() মেথডের মাধ্যমে নিরাপদভাবে উপাদান মুছে ফেলা যায়।
Iterator ব্যবহারের মাধ্যমে ডেটা স্ট্রাকচার পরিদর্শন করা, ডুপ্লিকেট এন্ট্রি বা নির্দিষ্ট উপাদান মুছে ফেলা এবং প্রোগ্রামকে আরও সঠিক, পরিষ্কার ও কার্যকরী করা সম্ভব।
Read more